package com.javabase.study.PracticeQuestions;

import java.util.Arrays;

/**
 * TODO
 * 内容：测试将字符串[1,2,3]转化成int型数组并打印
 * 作者:jxx
 * 创建时间：2021/7/19
 */
public class TestChar {
    public static void main(String[] args){

        String str = "[1,2,3]";
        StringBuilder sb = new StringBuilder();

        for(int i = 0;i < str.length();i++){
            String x = String.valueOf(str.charAt(i));
            if(!("[".equals(x) || "]".equals(x) || ",".equals(x))){
                sb.append(x);
            }
        }
        int[] intArray = new int[sb.length()];

        for(int i = 0;i < intArray.length;i++){
            intArray[i] = Integer.parseInt(String.valueOf(sb.charAt(i)));
        }
        System.out.println(Arrays.toString(intArray));

        int[] ints = plusOne(intArray);

        System.out.println(Arrays.toString(ints));


        // 实现数组表示的非负整数加一的逻辑
        /**
         * 一共三种情况：
         *     1. 数组末尾数即非负整数个位数小于9  加一不需要进位
         *     2. 数组末尾数即非负整数个位数等于9  加一需要进位 且其他各个位上的数字满足进位不需要扩充数组
         *     3. 数组各个元素都是9 即 非负整数 是 该长度下的非负整数最大值，即需要将结果数组扩充 扩充后首位是1其他位是0
         */
    }

    public static int[] plusOne(int[] intArray){
        int intArrayLength =intArray.length;
        for(int i = 0;i < intArrayLength; i++){

            intArray[intArrayLength - i - 1]++;
            intArray[intArrayLength - i - 1] = intArray[intArrayLength - i - 1] % 10;
            if(intArray[intArrayLength - i - 1] != 0){

                return intArray;
            }
        }
        int[] newArrayInt = new int[intArrayLength + 1];
        newArrayInt[0] = 0;
        return newArrayInt;
    }
}
